{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "# LeNet 案例"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "7a6eb757b41f73fd"
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:17.587387900Z",
     "start_time": "2024-01-13T07:27:10.275310700Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "import tensorflow as tf\n",
    "import keras"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 读取数据"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "aaa70fbd5bfb81ff"
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "data = pd.read_csv(\"D://data//digit-recognizer//train.csv\")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:22.629290200Z",
     "start_time": "2024-01-13T07:27:19.902892100Z"
    }
   },
   "id": "b503bc642d2ac892"
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(42000, 784) (42000,)\n"
     ]
    }
   ],
   "source": [
    "# 特征值\n",
    "x = data.iloc[:, 1:]\n",
    "# 目标值\n",
    "y = data.iloc[:, 0]\n",
    "print(x.shape, y.shape)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:23.540733700Z",
     "start_time": "2024-01-13T07:27:23.436795Z"
    }
   },
   "id": "f3a4b95cc9cd4702"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 基本数据处理"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "fd9c3cc7adf0f254"
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [],
   "source": [
    "# 1.先/255归一化，2.把每行784转换成28*28的矩阵\n",
    "x = (x.values / 255).reshape(-1, 28, 28)\n",
    "\n",
    "y = y.values"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:26.427736900Z",
     "start_time": "2024-01-13T07:27:26.260834100Z"
    }
   },
   "id": "cbec3c6037d0db8d"
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0, test_size=0.2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:31.805242800Z",
     "start_time": "2024-01-13T07:27:30.728346300Z"
    }
   },
   "id": "c92db05b7d99e8e6"
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       ...,\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]]])"
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T03:50:32.225500400Z",
     "start_time": "2024-01-13T03:50:32.202962900Z"
    }
   },
   "id": "752519f803babff"
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       ...,\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]],\n\n       [[0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        ...,\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.],\n        [0., 0., 0., ..., 0., 0., 0.]]])"
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T03:50:40.472373700Z",
     "start_time": "2024-01-13T03:50:40.395415200Z"
    }
   },
   "id": "e306769897bb66a9"
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "outputs": [
    {
     "data": {
      "text/plain": "array([6, 6, 4, ..., 9, 0, 9], dtype=int64)"
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T03:50:49.721627Z",
     "start_time": "2024-01-13T03:50:49.689644700Z"
    }
   },
   "id": "c87c8b3c3ca0e7eb"
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "outputs": [
    {
     "data": {
      "text/plain": "array([3, 6, 9, ..., 2, 7, 2], dtype=int64)"
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T03:51:11.207254400Z",
     "start_time": "2024-01-13T03:51:11.169491600Z"
    }
   },
   "id": "e48729c7fc578f12"
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "outputs": [
    {
     "data": {
      "text/plain": "(33600, 28, 28)"
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T03:51:26.817992800Z",
     "start_time": "2024-01-13T03:51:26.753926900Z"
    }
   },
   "id": "8ec9ad49fdf84922"
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "outputs": [
    {
     "data": {
      "text/plain": "(33600,)"
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T03:51:34.518485900Z",
     "start_time": "2024-01-13T03:51:34.496782100Z"
    }
   },
   "id": "c19a87f5049f0b19"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 维度调整"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b2a2cbbde8127d0c"
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "# 需要调整的数据是train_image,处理成：train_image[0]行，长宽都是28,1通道\n",
    "x_train = tf.reshape(x_train, (x_train.shape[0], x_train.shape[1], x_train.shape[2], 1))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:48.488754700Z",
     "start_time": "2024-01-13T07:27:48.396810300Z"
    }
   },
   "id": "2a377b0f07fc8b13"
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "TensorShape([33600, 28, 28, 1])"
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T06:38:37.885683300Z",
     "start_time": "2024-01-13T06:38:37.860604600Z"
    }
   },
   "id": "65573d816497c594"
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [],
   "source": [
    "x_test = tf.reshape(x_test, (x_test.shape[0], x_test.shape[1], x_test.shape[2], 1))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:49.684349100Z",
     "start_time": "2024-01-13T07:27:49.649368400Z"
    }
   },
   "id": "b74d72331b1b7a"
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [
    {
     "data": {
      "text/plain": "TensorShape([8400, 28, 28, 1])"
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T06:38:42.199231400Z",
     "start_time": "2024-01-13T06:38:42.170249Z"
    }
   },
   "id": "da3a50fa5120443f"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 模型构建"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "dd46f7c442c2d400"
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [],
   "source": [
    "model = keras.models.load_model('./手写字识别.h5')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:27:53.489595600Z",
     "start_time": "2024-01-13T07:27:53.256730800Z"
    }
   },
   "id": "5b89ba10d1ae20f4"
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [],
   "source": [
    "# 卷积层：提取特征\n",
    "# 池化层：防止过拟合\n",
    "# 全链路层：输出\n",
    "model = keras.models.Sequential([\n",
    "    # 6个卷积5*5的sigmoid kernel_size和5\n",
    "    tf.keras.layers.Conv2D(filters=6, kernel_size=5, activation=\"sigmoid\", input_shape=(28, 28, 1)),\n",
    "    # 最大池化 max pooling\n",
    "    tf.keras.layers.MaxPooling2D(pool_size=2, strides=2),\n",
    "    # 16个卷积5*5的sigmoid kernel_size和5\n",
    "    tf.keras.layers.Conv2D(filters=16, kernel_size=5, activation=\"sigmoid\"),\n",
    "    # 最大池化 max pooling\n",
    "    tf.keras.layers.MaxPooling2D(pool_size=2, strides=2),\n",
    "    # 维度调整：调整为一维数据\n",
    "    tf.keras.layers.Flatten(),\n",
    "    # 全连接层，sigmoid\n",
    "    tf.keras.layers.Dense(120, activation=\"sigmoid\"),\n",
    "    # 全连接层，sigmoid\n",
    "    tf.keras.layers.Dense(84, activation=\"sigmoid\"),\n",
    "    # 输出层，softmax\n",
    "    tf.keras.layers.Dense(10, activation=\"softmax\"),\n",
    "])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T06:38:48.628033200Z",
     "start_time": "2024-01-13T06:38:48.469938700Z"
    }
   },
   "id": "66a67af9edb5ad06"
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " conv2d (Conv2D)             (None, 24, 24, 6)         156       \n",
      "                                                                 \n",
      " max_pooling2d (MaxPooling2D  (None, 12, 12, 6)        0         \n",
      " )                                                               \n",
      "                                                                 \n",
      " conv2d_1 (Conv2D)           (None, 8, 8, 16)          2416      \n",
      "                                                                 \n",
      " max_pooling2d_1 (MaxPooling  (None, 4, 4, 16)         0         \n",
      " 2D)                                                             \n",
      "                                                                 \n",
      " flatten (Flatten)           (None, 256)               0         \n",
      "                                                                 \n",
      " dense (Dense)               (None, 120)               30840     \n",
      "                                                                 \n",
      " dense_1 (Dense)             (None, 84)                10164     \n",
      "                                                                 \n",
      " dense_2 (Dense)             (None, 10)                850       \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 44,426\n",
      "Trainable params: 44,426\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T05:22:26.553964700Z",
     "start_time": "2024-01-13T05:22:26.437030600Z"
    }
   },
   "id": "e39f61f5b7942da7"
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": "<IPython.core.display.Image object>"
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from keras import utils\n",
    "\n",
    "utils.plot_model(model)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T04:12:47.395035Z",
     "start_time": "2024-01-13T04:12:46.508425100Z"
    }
   },
   "id": "b9ea440441eed9a2"
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [],
   "source": [
    "# 优化器\n",
    "opt = tf.optimizers.SGD(learning_rate=0.9)\n",
    "# 当没有使用热编码的时候，损失函数用sparse_categorical_crossentropy，否则用categorical_crossentropy\n",
    "model.compile(optimizer=opt,\n",
    "              loss=\"sparse_categorical_crossentropy\",\n",
    "              metrics=[\"accuracy\"])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T06:38:56.490951200Z",
     "start_time": "2024-01-13T06:38:56.463870500Z"
    }
   },
   "id": "c505faa0704e5ff2"
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "132/132 [==============================] - 36s 272ms/step - loss: 0.0286 - accuracy: 0.9921 - val_loss: 0.0632 - val_accuracy: 0.9811\n",
      "Epoch 2/10\n",
      "132/132 [==============================] - 35s 263ms/step - loss: 0.0276 - accuracy: 0.9919 - val_loss: 0.0556 - val_accuracy: 0.9840\n",
      "Epoch 3/10\n",
      "132/132 [==============================] - 35s 264ms/step - loss: 0.0265 - accuracy: 0.9927 - val_loss: 0.0556 - val_accuracy: 0.9836\n",
      "Epoch 4/10\n",
      "132/132 [==============================] - 35s 267ms/step - loss: 0.0257 - accuracy: 0.9925 - val_loss: 0.0535 - val_accuracy: 0.9852\n",
      "Epoch 5/10\n",
      "132/132 [==============================] - 35s 263ms/step - loss: 0.0252 - accuracy: 0.9926 - val_loss: 0.0607 - val_accuracy: 0.9826\n",
      "Epoch 6/10\n",
      "132/132 [==============================] - 34s 261ms/step - loss: 0.0242 - accuracy: 0.9935 - val_loss: 0.0595 - val_accuracy: 0.9825\n",
      "Epoch 7/10\n",
      "132/132 [==============================] - 35s 262ms/step - loss: 0.0235 - accuracy: 0.9939 - val_loss: 0.1086 - val_accuracy: 0.9657\n",
      "Epoch 8/10\n",
      "132/132 [==============================] - 35s 262ms/step - loss: 0.0240 - accuracy: 0.9935 - val_loss: 0.0530 - val_accuracy: 0.9849\n",
      "Epoch 9/10\n",
      "132/132 [==============================] - 36s 269ms/step - loss: 0.0225 - accuracy: 0.9939 - val_loss: 0.0551 - val_accuracy: 0.9848\n",
      "Epoch 10/10\n",
      "132/132 [==============================] - 33s 254ms/step - loss: 0.0213 - accuracy: 0.9945 - val_loss: 0.0546 - val_accuracy: 0.9843\n"
     ]
    }
   ],
   "source": [
    "# validation_split，使用10%作为验证集,batch_size可以提高效率\n",
    "his = model.fit(x_train,\n",
    "                y_train,\n",
    "                epochs=10,\n",
    "                # validation_split=0.1,\n",
    "                validation_data=(x_test,y_test),\n",
    "                batch_size=256)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:33:51.481989900Z",
     "start_time": "2024-01-13T07:28:02.700612200Z"
    }
   },
   "id": "d0c3e3a5046070d0"
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "263/263 [==============================] - 1s 3ms/step - loss: 0.0546 - accuracy: 0.9843\n"
     ]
    }
   ],
   "source": [
    "loss, acc = model.evaluate(x_test, y_test, verbose=1)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:34:27.220051200Z",
     "start_time": "2024-01-13T07:34:26.276814900Z"
    }
   },
   "id": "5fcec5733280533e"
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "outputs": [],
   "source": [
    "model.save('手写字识别.h5')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:35:05.515600600Z",
     "start_time": "2024-01-13T07:35:05.449656600Z"
    }
   },
   "id": "f525899ccce09ed8"
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 35757 (\\N{CJK UNIFIED IDEOGRAPH-8BAD}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 32451 (\\N{CJK UNIFIED IDEOGRAPH-7EC3}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 38598 (\\N{CJK UNIFIED IDEOGRAPH-96C6}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 27979 (\\N{CJK UNIFIED IDEOGRAPH-6D4B}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 35797 (\\N{CJK UNIFIED IDEOGRAPH-8BD5}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 39564 (\\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 35777 (\\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 35757 (\\N{CJK UNIFIED IDEOGRAPH-8BAD}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 32451 (\\N{CJK UNIFIED IDEOGRAPH-7EC3}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 38598 (\\N{CJK UNIFIED IDEOGRAPH-96C6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 27979 (\\N{CJK UNIFIED IDEOGRAPH-6D4B}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 35797 (\\N{CJK UNIFIED IDEOGRAPH-8BD5}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 39564 (\\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 35777 (\\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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ohsAFFhERMRahoyFmQ8b41LaXpkzaLRaIwcwBRYREbGeybebXYFYjNrQRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPIUWERERMTyFFhERETE8hRYRERExPJ6FFiWL19OcXExHo+HkpISNmzYcMrt169fT0lJCR6Ph3HjxrFy5cpOt/3tb3+LzWbj6quv7klpIiIi0g8lHFjWrFnD/Pnzue+++9i+fTvTpk3jiiuuoLKyMu72e/bsYdasWUybNo3t27dz7733cuedd/Liiy922Hbfvn3cfffdTJs2LfGvRERERPqthAPL448/zm233cacOXOYMGECy5Yto7CwkBUrVsTdfuXKlRQVFbFs2TImTJjAnDlzuPXWW3nsscfabRcMBrnpppt48MEHGTduXM++GhEREemXEgosPp+PrVu3UlZW1m59WVkZGzdujPuZTZs2ddh+5syZbNmyBb/fH1u3ZMkS8vLyuO222xIpSURERAYAZyIb19bWEgwGyc/Pb7c+Pz+fmpqauJ+pqamJu30gEKC2tpaRI0fy1ltv8eyzz7Jjx45u1+L1evF6vbHXdXV1APj9/nZB6HRF99Wb+5Se0/mwHp0Ta9H5sBadj65193uTUGCJstls7V6Hw+EO67raPrq+vr6e733vezz99NPk5uZ2u4alS5fy4IMPdli/bt06MjIyur2f7qqoqOj1fUrP6XxYj86Jteh8WIvOR+eampq6tV1CgSU3NxeHw9GhNeXQoUMdWlGiRowYEXd7p9PJsGHD+Oijj9i7dy9XXXVV7P1QKGQU53Ty6aefcsYZZ3TY76JFiygvL4+9rquro7CwkLKyMnJychL5sk7J7/dTUVHBjBkzcLlcvbZf6RmdD+vRObEWnQ9r0fnoWrSHpCsJBRa3201JSQkVFRVcc801sfUVFRXMnj077mcmT57MSy+91G7dunXrKC0txeVyMX78eD744IN27y9evJj6+np+/vOfU1hYGHe/aWlppKWldVjvcrmS8o8iWfuVntH5sB6dE2vR+bAWnY/Odff7knCXUHl5OTfffDOlpaVMnjyZVatWUVlZydy5cwGj5ePAgQP86le/AmDu3Lk8+eSTlJeX84Mf/IBNmzbx7LPP8sILLwDg8XiYOHFiu2MMHjwYoMN6ERERGZgSDizXX389R44cYcmSJVRXVzNx4kTWrl3LmDFjAKiurm43J0txcTFr165lwYIFPPXUUxQUFPDEE09w7bXX9t5XISIiIv1ajwbdzps3j3nz5sV977nnnuuwbvr06Wzbtq3b+4+3DxERERm4dC8hERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPAUWERERsTwFFhEREbE8BRYRERGxPKfZBVjdbzZXsanSzqFN+xiW5WFwhovBGW4Gp7sYkuEmJ92Fw24zu0wREZF+TYGlC/+74yA7Dth59cCnnW6T43EyJNMIMYMz3AzOMMLMoHRX63LkeXBkXY7HhV1BR0REpFsUWLpw5XkjyPIdY1BeAXXeAMeafBxv8nOiyU+9NwBAXUuAupYA+xLYr80Gg9LjBJvIOqMlp31rzqAMF9lpTgUdEREZcBRYuvB3k8cw/NhHzJp1Pi6Xq917/mCIE81+jkdCzPEmP8eafJF1xvLxk94/3uSj0RckHCa2LhF2G7EQ0zbQtLbsuBjUJuREg09WmhObTUFHRERSkwLLaXA57ORmpZGblZbQ53yBEMebfZxo8nO82c+xRiPYnDhFyDne7KfJFyQUhqONPo42+hI6psNuY0iGi2GZaQzLcjMsK41h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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# 绘制损失\n",
    "plt.figure()\n",
    "plt.plot(his.history['loss'], label='训练集')\n",
    "plt.plot(his.history['val_loss'], label=\"测试集(验证集)\")\n",
    "plt.legend()\n",
    "plt.grid()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:34:40.436163200Z",
     "start_time": "2024-01-13T07:34:39.336190500Z"
    }
   },
   "id": "bbedf68d9d2f1486"
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 35757 (\\N{CJK UNIFIED IDEOGRAPH-8BAD}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 32451 (\\N{CJK UNIFIED IDEOGRAPH-7EC3}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 38598 (\\N{CJK UNIFIED IDEOGRAPH-96C6}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 27979 (\\N{CJK UNIFIED IDEOGRAPH-6D4B}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 35797 (\\N{CJK UNIFIED IDEOGRAPH-8BD5}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 39564 (\\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\events.py:89: UserWarning: Glyph 35777 (\\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from current font.\n",
      "  func(*args, **kwargs)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 35757 (\\N{CJK UNIFIED IDEOGRAPH-8BAD}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 32451 (\\N{CJK UNIFIED IDEOGRAPH-7EC3}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 38598 (\\N{CJK UNIFIED IDEOGRAPH-96C6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 27979 (\\N{CJK UNIFIED IDEOGRAPH-6D4B}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 35797 (\\N{CJK UNIFIED IDEOGRAPH-8BD5}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 39564 (\\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "F:\\ProgramData\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 35777 (\\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制准确率\n",
    "plt.figure()\n",
    "plt.plot(his.history['accuracy'], label='训练集')\n",
    "plt.plot(his.history['val_accuracy'], label=\"测试集(验证集)\")\n",
    "plt.legend()\n",
    "plt.grid()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-01-13T07:34:50.881931200Z",
     "start_time": "2024-01-13T07:34:50.608072400Z"
    }
   },
   "id": "7cb5295ef43f3151"
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   },
   "id": "fc582d4af3960a60"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
